package org.example.component;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
/**
 * 目标方法执行前
 * @param request
 * @param response
 * @param handler
 * @return
 * @throws Exception
注册拦截器
创建一个实现了 WebMvcConfigurer 接口的配置类（使用了 @Configuration 注解的类），重写
addInterceptors() 方法，并在该方法中调用 registry.addInterceptor() 方法将自定义的拦截器注册到容
器中。
 */
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse
        response, Object handler) throws Exception {
    Object loginUser = request.getSession().getAttribute("loginUser");
    if(loginUser == null){
        request.setAttribute("msg","您没有权限进行此操作，请先登录！");
        request.getRequestDispatcher("/index.html").forward(request,
                response);
        return false;
    } else {
// 放行
        return true;
    }
}
    /**
     * 目标方法执行后
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse
            response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("postHandle执行{}", modelAndView);
    }
    /**
     * 页面渲染后
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse
            response, Object handler, Exception ex) throws Exception {
        log.info("afterCompletion执行异常{}", ex);
    }
}
